﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Exec
{
    // 플러그인 확장 정보 클래스
    public class PlugIn
    {
        /*
         * 필드는 관리계층에서 설정된 정보이다. 
         */
        public readonly IPlugIn pi;
        public readonly int lv;         //  플러그인 레벨

        public PlugIn(IPlugIn npi, int nlv)
        {
            pi = npi;
            lv = nlv;
        }

        ~PlugIn()
        {
            pi.Unload();
        }

        // 플러그인 정보
        public void GetInfo()
        {
            Console.WriteLine(GetPrefix() + '\t' + lv + '\t' + pi.GetInfo());
        }

        // 플러그인 접두사
        public string GetPrefix()
        {
            return pi.GetPrefix();
        }

        // 플러그인 맵에 추가된후 호출
        public void AddNotify()
        {
            pi.Load();
        }

        // 플러그인이 제거된후 호출
        public void RemoveNotify()
        {            
            pi.Unload();
        }
    }
}
